package com.petdog.infrastructure.mapper;

import com.petdog.infrastructure.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户Mapper接口
 */
@Mapper
public interface UserMapper {
    /**
     * 根据用户名查询用户
     */
    User selectByUsername(@Param("username") String username);
    
    /**
     * 根据用户ID查询用户
     */
    User selectById(@Param("userId") Long userId);
    
    /**
     * 根据邮箱查询用户
     */
    User selectByEmail(@Param("email") String email);
    
    /**
     * 根据手机号查询用户
     */
    User selectByPhone(@Param("phone") String phone);
    
    /**
     * 插入用户
     */
    int insert(User user);
    
    /**
     * 更新用户
     */
    int update(User user);
    
    /**
     * 更新登录信息
     */
    int updateLoginInfo(@Param("userId") Long userId, 
                        @Param("lastLoginTime") java.time.LocalDateTime lastLoginTime, 
                        @Param("lastLoginIp") String lastLoginIp);
    
    /**
     * 查询用户列表
     */
    List<User> selectUserList(
            @Param("offset") int offset,
            @Param("pageSize") int pageSize,
            @Param("username") String username,
            @Param("phone") String phone,
            @Param("email") String email,
            @Param("status") Integer status
    );
    
    /**
     * 查询用户总数
     */
    long countUserList(
            @Param("username") String username,
            @Param("phone") String phone,
            @Param("email") String email,
            @Param("status") Integer status
    );
    
    /**
     * 批量删除用户
     */
    int batchDelete(@Param("ids") List<Long> ids);
    
    /**
     * 更新用户状态
     */
    int updateStatus(@Param("id") Long id, @Param("status") Integer status);
}
